GIT切换分支或还原工作区命令git

您所在的位置:网站首页 git checkout 恢复 GIT切换分支或还原工作区命令git

GIT切换分支或还原工作区命令git

2024-07-10 00:49| 来源: 网络整理| 查看: 265

名称

git-checkout - 切换分支或还原工作树文件

概要 git checkout [-q] [-f] [-m] [] git checkout [-q] [-f] [-m] --detach [] git checkout [-q] [-f] [-m] [--detach] git checkout [-q] [-f] [-m] [[-b|-B|--orphan] ] [] git checkout [-f|--ours|--theirs|-m|--conflict=] [] [--] …​ git checkout [-f|--ours|--theirs|-m|--conflict=] [] --pathspec-from-file= [--pathspec-file-nul] git checkout (-p|--patch) [] [--] […​] 描述

更新工作树中的文件以匹配索引或指定树中的版本。 如果未给出路径说明,则git checkout还将更新HEAD以将指定的分支设置为当前分支。

git checkout []

通过该命令切换到一个已存在的分支上,要准备在上工作,请通过更新工作树中的索引和文件并将HEAD指向分支来切换到该分支。

保留对工作树中文件的本地修改,以便可以将它们提交到该。

Note

分支切换会改变你工作目录中的文件

在切换分支时,一定要注意你工作目录里的文件会被改变。 如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 如果 Git 不能干净利落地完成这个任务,它将禁止切换分支。

git checkout -b

指定 -b 会导致创建新分支,就像调用git branch 然后将其检出一样;如果当前仓库中,已经存在一个跟你新建分支同名的分支,那么使用该命令,是会报错的,且同名分支无法创建。

git checkout -B []

指定 -B,如果不存在,则创建;如果存在,则该分支将被覆盖。这事务等效与

#将重置为,即使已经存在 $ git branch -f [] $ git checkout

也就是说,除非“ git checkout”成功,否则不会重置/创建分支。

git checkout --detach []

不省略,则会切换到分支,并且该分支的顶端分离HEAD,即是游离状态省略会在当前分支的顶端分离HEAD

git checkout [--detach]

切换到某个提交,并更新工作树中的索引和文件。注意:这个会产生分离HEAD

保留对工作树中文件的本地修改,以便最终的工作树将是提交中记录的状态加上本地修改。

如下图1,一开始HEAD指向master分支,如果我们执行 git checkout c1,则会产生分离HEAD,如图2

  

git checkout [-f] [] [--] …​

覆盖与pathspec匹配的文件的内容

未给出(通常是一次提交),则使用索引中的内容覆盖工作树。给出后,用中的内容覆盖索引和工作树。

总结:该用法不会改变HEAD头指针,主要使用于指定版本的文件覆盖工作区中对应的文件。如果省略,则会用暂存区的文件覆盖工作区中的文件,否则用指定提交中的文件覆盖暂存区和工作区中的对应文件。

选项

-q    --quiet

Quiet, suppress feedback messages.

--progress

--no-progress

除非指定了--quiet,否则默认情况下,将进度状态报告给标准错误流时将其报告到终端上。 即使未连接到终端,此标志也可以启用进度报告,而不管--quiet。

-f    --force

用于切换分支时,即使索引或工作树与HEAD不同,也要继续进行。 这用于丢弃本地更改。

用于从索引中签出路径时,不要在未合并的条目上失败; 相反,未合并的条目将被忽略。

-b

创建一个名为 的新分支,并在开始; 

-B

创建分支 并从 开始; 如果已经存在,则将其重置为。

--detach(分离)

不是签出分支来进行工作,而是签出一个提交用来进行检查和做可丢弃的实验尝试。 当不是分支名称时,这是git checkout 的默认行为。

-m    --merge

切换分支时,如果你对一个或多个文件的本地修改在当前分支和要切换到的分支之间不同,则该命令将拒绝切换分支以保留上下文中的修改。

但是,使用此选项,将在当前分支,工作树内容和新分支之间进行三向合并,并且你将位于新分支上。

发生合并冲突时,冲突路径的索引条目将保持未合并状态,你需要解决冲突并使用git add标记已解决的路径(或者,如果合并会导致路径的删除,可以使用git rm)。

从索引中检出路径时,此选项可让您在指定的路径中重新创建冲突的合并。

当使用--merge切换分支时,暂存的更改可能会丢失。

签出的分支;

如果它指向一个分支(即名称,当以"refs/heads/"开头时是有效的引用),则将该分支检出。

如果它指的是有效的提交,则您的HEAD将变为"分离''并且您不再位于任何分支上。

新分支的名称。

开始新分支的提交的名称;默认为HEAD。

Tree to checkout from (when paths are given). If not specified, the index will be used.

--

不要将其他参数解释为选项。

…​

限制受操作影响的路径。

示例 #//取出master版本的head $ git checkout master #//在当前分支上 取出 tag_name 的版本 $ git checkout tag_name #//放弃当前对文件file_name的修改 $ git checkout master file_name #//取commit_id版本的名为file_name的文件,commit_id为 git commit 时的sha值 $ git checkout commit_id file_name # 从远程dev/1.5.4分支取得到本地分支/dev/1.5.4 $ git checkout -b dev/1.5.4 origin/dev/1.5.4 # 这条命令把hello.rb从HEAD中签出. $ git checkout -- hello.rb #这条命令把 当前目录所有修改的文件 从HEAD中签出并且把它恢复成未修改时的样子. $ git checkout . #注意:在使用 git checkout 时,如果其对应的文件被修改过,那么该修改会被覆盖掉。

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3